From 442cc83995ed5b49eb678f11dc8dcef0e9e0c752 Mon Sep 17 00:00:00 2001 From: "maf46@burn.cl.cam.ac.uk" Date: Sat, 19 Feb 2005 19:40:02 +0000 Subject: [PATCH] bitkeeper revision 1.1205.1.9 (42179612_ThKiOQJXSvUd2fzY_5Zjg) Minor shadow code cleanups/renames. --- xen/arch/x86/shadow.c | 18 +++++++++--------- xen/include/asm-x86/shadow.h | 19 +++++++++++-------- 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/xen/arch/x86/shadow.c b/xen/arch/x86/shadow.c index be49e96f41..6590416793 100644 --- a/xen/arch/x86/shadow.c +++ b/xen/arch/x86/shadow.c @@ -465,15 +465,15 @@ void vmx_shadow_clear_state(struct domain *d) unsigned long shadow_l2_table( - struct domain *d, unsigned long gpfn) + struct domain *d, unsigned long gmfn) { struct pfn_info *spfn_info; unsigned long spfn; - unsigned long guest_gpfn; + unsigned long gpfn; - guest_gpfn = __mfn_to_gpfn(d, gpfn); + gpfn = __mfn_to_gpfn(d, gmfn); - SH_VVLOG("shadow_l2_table( %p )", gpfn); + SH_VVLOG("shadow_l2_table( %p )", gmfn); perfc_incrc(shadow_l2_table_count); @@ -485,14 +485,14 @@ unsigned long shadow_l2_table( spfn = spfn_info - frame_table; /* Mark pfn as being shadowed; update field to point at shadow. */ - set_shadow_status(d, guest_gpfn, spfn | PSH_shadowed); + set_shadow_status(d, gpfn, spfn | PSH_shadowed); #ifdef __i386__ /* Install hypervisor and 2x linear p.t. mapings. */ if ( shadow_mode_translate(d) ) { #ifdef CONFIG_VMX - vmx_update_shadow_state(d->exec_domain[0], gpfn, spfn); + vmx_update_shadow_state(d->exec_domain[0], gmfn, spfn); #else panic("Shadow Full 32 not yet implemented without VMX\n"); #endif @@ -514,19 +514,19 @@ unsigned long shadow_l2_table( &idle_pg_table[DOMAIN_ENTRIES_PER_L2_PAGETABLE], HYPERVISOR_ENTRIES_PER_L2_PAGETABLE * sizeof(l2_pgentry_t)); spl2e[LINEAR_PT_VIRT_START >> L2_PAGETABLE_SHIFT] = - mk_l2_pgentry((gpfn << PAGE_SHIFT) | __PAGE_HYPERVISOR); + mk_l2_pgentry((gmfn << PAGE_SHIFT) | __PAGE_HYPERVISOR); spl2e[SH_LINEAR_PT_VIRT_START >> L2_PAGETABLE_SHIFT] = mk_l2_pgentry((spfn << PAGE_SHIFT) | __PAGE_HYPERVISOR); spl2e[PERDOMAIN_VIRT_START >> L2_PAGETABLE_SHIFT] = mk_l2_pgentry(__pa(page_get_owner( - &frame_table[gpfn])->arch.mm_perdomain_pt) | + &frame_table[gmfn])->arch.mm_perdomain_pt) | __PAGE_HYPERVISOR); unmap_domain_mem(spl2e); } #endif - SH_VLOG("shadow_l2_table( %p -> %p)", gpfn, spfn); + SH_VLOG("shadow_l2_table( %p -> %p)", gmfn, spfn); return spfn; } diff --git a/xen/include/asm-x86/shadow.h b/xen/include/asm-x86/shadow.h index 8bfe38d530..25b0287b7b 100644 --- a/xen/include/asm-x86/shadow.h +++ b/xen/include/asm-x86/shadow.h @@ -70,7 +70,7 @@ static inline void shadow_mode_disable(struct domain *d) } extern unsigned long shadow_l2_table( - struct domain *d, unsigned long gpfn); + struct domain *d, unsigned long gmfn); static inline void shadow_invalidate(struct exec_domain *ed) { if ( !shadow_mode_translate(ed->domain)) @@ -657,7 +657,7 @@ static inline void set_shadow_status( #ifdef CONFIG_VMX static inline void vmx_update_shadow_state( - struct exec_domain *ed, unsigned long gpfn, unsigned long smfn) + struct exec_domain *ed, unsigned long gmfn, unsigned long smfn) { l2_pgentry_t *mpl2e = 0; @@ -681,7 +681,7 @@ static inline void vmx_update_shadow_state( __flush_tlb_one(SH_LINEAR_PT_VIRT_START); spl2e = (l2_pgentry_t *)map_domain_mem(smfn << PAGE_SHIFT); - gpl2e = (l2_pgentry_t *)map_domain_mem(gpfn << PAGE_SHIFT); + gpl2e = (l2_pgentry_t *)map_domain_mem(gmfn << PAGE_SHIFT); memset(spl2e, 0, L2_PAGETABLE_ENTRIES * sizeof(l2_pgentry_t)); ed->arch.shadow_vtable = spl2e; @@ -729,16 +729,19 @@ static inline unsigned long gva_to_gpa(unsigned long gva) static inline void __update_pagetables(struct exec_domain *ed) { struct domain *d = ed->domain; - unsigned long gpfn = pagetable_val(ed->arch.guest_table) >> PAGE_SHIFT; - unsigned long smfn = __shadow_status(d, gpfn) & PSH_pfn_mask; + unsigned long gmfn = pagetable_val(ed->arch.guest_table) >> PAGE_SHIFT; - SH_VVLOG("0: __update_pagetables(gpfn=%p, smfn=%p)", gpfn, smfn); + // mafetter: BUG: __shadow_status() should take a gpfn, not a gmfn... + // WHY DOES THIS WORK? + unsigned long smfn = __shadow_status(d, gmfn) & PSH_pfn_mask; + + SH_VVLOG("0: __update_pagetables(gmfn=%p, smfn=%p)", gmfn, smfn); if ( unlikely(smfn == 0) ) - smfn = shadow_l2_table(d, gpfn); + smfn = shadow_l2_table(d, gmfn); #ifdef CONFIG_VMX else if ( shadow_mode_translate(ed->domain) ) - vmx_update_shadow_state(ed, gpfn, smfn); + vmx_update_shadow_state(ed, gmfn, smfn); #endif ed->arch.shadow_table = mk_pagetable(smfn<